//items das array das alle items hält
items = [];
//funktion für die erstellung der Heal items
function heal(x, y, z){
	this.xPo = x;
	this.yPo = y;
	this.zPo = z;
	
	this.type = heal
	this.hpBoost = 40;
	
	this.vMin = new t.Vector3((x-50),(y-50),(z-50));
	this.vMax = new t.Vector3((x+50),(y+50),(z+50));

	this.healGeo = new t.SphereGeometry(50, 6, 6);
	this.healMat = new t.MeshBasicMaterial({color: 0x116611})
	this.mesh = new t.Mesh(this.healGeo, this.healMat);
	
	this.mesh.position.set(x, y, z);
	
	this.mesh.geometry.computeBoundingBox();
	this.mesh.geometry.boundingBox = new t.Box3(this.vMin, this.vMax);
	
	items.push(this);
	scene.add(this.mesh);
}
//funktion um hp veränderungen des spielers anzuzeigen und berechnen zu lassen
function hpChange(change){
	//console.log(change);
	health = health + change;
		
	//update der lebensleiste
	document.getElementById("hp").setAttribute("style","width:"+health+"%");
	
	if(health <= 0){
		console.log("du bist tot");
	}

}

//funktion um ein exit zu erstellen
function exit(x, y, z){
	this.xPo = x;
	this.yPo = y;
	this.zPo = z;
	
	this.type = exit
	
	this.vMin = new t.Vector3((x-50),(y-50),(z-50));
	this.vMax = new t.Vector3((x+50),(y+50),(z+50));

	this.exitGeo = new t.SphereGeometry(50, 6, 6);
	this.exitMat = new t.MeshBasicMaterial({color: 0x000000})
	this.mesh = new t.Mesh(this.exitGeo, this.exitMat);
	
	this.mesh.position.set(x, y, z);
	
	this.mesh.geometry.computeBoundingBox();
	this.mesh.geometry.boundingBox = new t.Box3(this.vMin, this.vMax);
	
	items.push(this);
	scene.add(this.mesh);
}

//checkItems überprüft die Position des Spielers mit Items die gerade existent sind
//falls dann ein spieler in der Boundbind box betritt wird für das jeweilige item überprüft
//ob man es aktivieren bzw aufnehmen kann
function checkItems(){
	for(var i = 0; i < items.length; i++){
		var item = items[i], bB = item.mesh.geometry.boundingBox;
		if(item.type == heal ){
			if(
			cam.position.x < bB.max.x && cam.position.x > bB.min.x &&
			cam.position.y < bB.max.y && cam.position.y > bB.min.y &&
			cam.position.z < bB.max.z && cam.position.z > bB.min.z){
			
				console.log("heal");
				//health = health +40;
				if(health < 100){
					hpChange(item.hpBoost);		
					items.splice(i, 1);
					scene.remove(item.mesh);
				}
			}
		}
		if(item.type == exit){
			if(
				cam.position.x < bB.max.x && cam.position.x > bB.min.x &&
				cam.position.y < bB.max.y && cam.position.y > bB.min.y &&
				cam.position.z < bB.max.z && cam.position.z > bB.min.z){
				
				console.log("exit");
				if(geg.length == 0){
					aktuelleMap = aktuelleMap + 1;
					//getNextMap();
					gewonnen = 1;
					document.getElementById("gegnerAnzahl").innerHTML = geg.length;
					//console.log("nextmap");
				}	
			}	
		}
	}
}

//function um zufällig nach vernichtung eines Gegners
//ein heal item zu spawnen
function spawnHeal(x,y,z){
	var rnd = Math.ceil(Math.random()*5);
	//console.log(rnd, x,y,z);
	if(rnd == 2){
		new heal(x,y,z);
	}
}






















